import numpy as np

# 创建一个非方阵
A = np.array([[1, 2, 3],
              [4, 5, 6]])

# 进行奇异值分解
U, s, VT = np.linalg.svd(A)

# s是一个一维数组，包含了奇异值。为了形成对角矩阵Sigma，我们需要构建一个矩阵。
Sigma = np.zeros((U.shape[1], VT.shape[0]))
np.fill_diagonal(Sigma, s)

# 打印结果
print("原矩阵 A:\n", A)
print("\n左奇异向量 U:\n", U)
print("\n奇异值 Sigma:\n", Sigma)
print("\n右奇异向量 V^T:\n", VT)

# 验证A = U * Sigma * V^T
A_reconstructed = np.dot(U, np.dot(Sigma, VT))
print("\n重构的矩阵 A:\n", A_reconstructed)